con Quarto y GitHub Actions
María Cristina Nanton
Coordinación en Ciencia de Datos en Gerencia de Información y Estadísticas en Salud (GCBA)
AI Dev en The Global Health Network
R-Ladies Buenos Aires💜
Colaboradora
en MetaDocencia🍎
Jesica Formoso
Investigadora Adjunta,
CIIPME-CONICET
Medición de Impacto en Metadocencia🍎
R-Ladies Buenos Aires 💜
Conceptos básicos para trabajar con GitHub Actions, GH Pages y Quarto
Preparación de un entorno de trabajo para flujos bien automatizados
Creación de un flujo automatizado de publicación en GH Pages basado en pushes a un repositorio
Adaptación a ejecuciones periódicas
Un sitio publicado en GH Pages generado desde Quarto alimentado de manera periódica y automatizada a partir de respuestas a un formulario con orquestación via GH Actions
Conceptos básicos
GitHub
Plataforma orientada al desarrollo de software que integra repositorios con control de versiones con un enfoque de desarrollo colaborativo
GitHub Actions
Herramienta de integración y deploy continuo (CI/CD) que permite automatizar el trabajo con código, desde los testeos hasta la publicación de productos
La integración continua (CI) consiste en integrar los cambios del código en un repositorio de código fuente compartido de forma automática y frecuente.La implementación o distribución continua (CD) es un proceso de dos partes que implica la integración, la prueba y la distribución de los cambios en el código.
Fuente: Red Hat
rOpenSci usa CI/CD con GHA para actualizar su Guía de desarrollo!
Turing Way usa CI/CD con GHA para flujos de chequeo y publicación: por ejemplo, para revisar el mal uso del latin en sus publicaciones!
Las GHA usan sintaxis YAML para organizar las automatizaciones.
¡Todo lo que un proyecto de Quarto con R necesita para ejecutarse de manera automática!
¡Todo lo que un proyecto de Quarto con R necesita para ejecutarse de manera automática!
Y además:
renvHerramienta que permite capturar todas las bibliotecas que usadas en un proyecto e instalarlas si es necesario
Símil venv si vienen de manejar Python
Una máquina virtual (VM) es una manera de emular un equipo físico (como nuestras computadoras) en todos sus aspectos: espacio de almacenamiento, memoria y sistema operativo.
Son entornos aislados que podemos utilizar para ejecutar procesos.
En sistemas operativos Unix, cron es un administrador de procesos para ejecutarlos a intervalos regulares
* * * * * comando-a-ejecutar
| | | | |
| | | | └── Día de la semana (0-7, donde 0 y 7 representan domingo)
| | | └──── Mes (1-12)
| | └────── Día del mes (1-31)
| └──────── Hora (0-23)
└────────── Minuto (0-59)
Con estas expresiones podemos ordenar la ejecución de procesos con cualquier periodicidad
0 * * * * revisar_cada_una_hora
| | | | |
| | | | └── Día de la semana (todos)
| | | └──── Mes (todos)
| | └────── Día del mes (todos)
| └──────── Hora (todos)
└────────── Minuto (al minuto 0, es decir, el inicio de cada hora)
Quarto
Herramienta para generar artículos, sitios o publicaciones en formatos word, pdf, html, entre otros
Github Pages
Herramienta de GitHub para crear sitios web directamente desde el contenido de un repositorio
Vamos a usar las reacciones de zoom para preguntas de opción múltiple
👍 Quarto
😮 renv
👏 GitHub
👍 YAML
😮 .workflow
👏 cron
👍 El de la computadora en la que se redactó el código
😮 El que elija GitHub para mi acción
👏 El de la máquina virtual que configure yo
Recorrido por los elementos del proyecto en el repositorio
Combinamos los elementos para un flujo automatizado
uses utiliza una acción ya existente, empaquetada por GitHub o la comunidad
run ejecuta comandos directamente en la terminal del runner
Este paso usa una acción pre empaquetada para publicar un proyecto de Quarto.
with:
Este paso usa una acción pre empaquetada para publicar un proyecto de Quarto.
env:
Token de autorización que GitHub genera automáticamente para cada ejecución de un workflow de GitHub Actions.
Trabajamos en el repositorio
👍 jobs:
😮 steps:
👏 on:
👍 Dentro de un R script (ejemplo.R) via terminal de la VM
😮 Dentro de un R script (ejemplo.R) via terminal de R
🎉 Como un comando R aislado via Rscript -e (install.packages())
👏 Todas las opciones son correctas
Permiten acceder a credenciales o información sensible sin escribirlo directamente en el código.
Todo lo que almacenamos aquí queda cifrado y nunca se muestra en texto plano.
Cada secreto tiene un nombre y un valor oculto.
Usamos el nombre para invocar el valor desde GitHub Actions.
Con env creamos variables de entorno dentro del job, cuyo valor proviene de los secretos del repositorio.
En R, las variables de entorno se leen con Sys.getenv().
Por favor, dejanos una pequeña reseña aquí 👉 http://tiny.cc/quarto-GHA
Contactanos! jesica.formoso@gmail.com| mcnanton@gmail.com